/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.dosideas.service.impl;

import com.dosideas.dao.ProvinciaDao;
import com.dosideas.domain.Provincia;
import com.dosideas.exception.NombreInvalidoException;
import com.dosideas.exception.ProvinciaInvalidaException;
import com.dosideas.service.ProvinciaService;
import java.util.Collection;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

/**
 *
 * @author ldeseta
 */
@Service
@Transactional
public class ProvinciaServiceImpl implements ProvinciaService {

    @Autowired
    private ProvinciaDao dao;

    public ProvinciaServiceImpl() {
    }

    public void setDao(ProvinciaDao dao) {
        this.dao = dao;
    }

    public ProvinciaDao getDao() {
        return this.dao;
    }

    @Override
    public Provincia buscarProvinciaPorId(long id) {
        return getDao().buscarProvinciaPorId(id);
    }

    @Override
    public void guardarProvincia(Provincia provincia) throws ProvinciaInvalidaException {
        ProvinciaInvalidaException excepcion = new ProvinciaInvalidaException("Provincia invalida");
        if (provincia == null) {
            throw excepcion;
        }
        if (provincia.getNombre() == null) {
            throw excepcion;
        }
        if (provincia.getNombre().length() < 3) {
            throw excepcion;
        }

        getDao().guardarProvincia(provincia);
    }

    @Override
    public Collection<Provincia> buscarProvinciaConNombreExacto(String nombreExacto) throws NombreInvalidoException {
        return getDao().buscarProvinciaConNombreExacto(nombreExacto);
    }

    @Override
    public Collection<Provincia> buscarProvinciaConNombreAproximado(String nombreBuscar) throws NombreInvalidoException {
        return getDao().buscarProvinciaConNombreAproximado(nombreBuscar);
    }

    @Override
    public Collection<Provincia> listarProvincias() {
        return getDao().listarProvincias();
    }
}
